<?php

use think\facade\Cache;
use think\facade\Db;
use think\facade\Request;

// 这是系统自动生成的公共文件
function addAdminLog($content='',$remark=''){
    $token = trim(Request::header('token'));
    $admin_info = Cache::store('redis')->get('admin_'.$token);


    $data = [
        'admin_id' => $admin_info['id'],
        'realname' => $admin_info['realname'],
        'content' => $content,
        'ip' =>  app('request')->ip(),
        'remark' => $remark,
        'create_time' => date("Y-m-d H:i:s"),
    ];
    Db::name("admin_log")->insert($data);
}
/**
 * Unicode字符转换成utf8字符
 * @param [type] $unicode_str Unicode字符
 * @return [type]       Utf-8字符
 */
function u2c($str)
{
    return preg_replace_callback("#\\\u([0-9a-f]{4})#i",
        function ($r) {

            return iconv('UCS-2BE', 'UTF-8', pack('H4', $r[1]));
        },
        $str);
}
/**
 * 储存用户redis信息
 *
 * @param String $token
 * @param $member_data
 * @throws \Psr\SimpleCache\InvalidArgumentException
 */
function saveRedisAdmin($token, $member_data)
{
    $uid = $member_data['id'];
    // 保存用户信息
    Cache::store('redis')->set((string)"admin_" . $token, $member_data, 3600 * 24 * 7);
    // 这一步清理之前该用户储存的redis
    Cache::store('redis')->delete((string)Cache::store('redis')->get("admin_user_" . $uid));
    // 储存
    Cache::store('redis')->set((string)"admin_user_" . $uid, "admin_" . $token, 3600 * 24 * 7);
}

function admin_is_json($string) {
    json_decode($string);
    return (json_last_error() == JSON_ERROR_NONE);
}
/**
 * 本周的开始日期
 *
 * @param bool $His     是否展示时分秒 默认true
 *
 * @return false|string
 */
function beginWeek($His = true)
{
    $timestamp = mktime(0, 0, 0, date('m'), date('d') - date('w') + 1, date('Y'));
    return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
}

/**
 * 本周的结束日期
 *
 * @param bool $His     是否展示时分秒 默认true
 *
 * @return false|string
 */
function endWeek($His = true)
{
    $timestamp = mktime(23, 59, 59, date('m'), date('d') - date('w') + 7, date('Y'));
    return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
}

/**
 * 根据父级id查找子级数据
 * @param $data     要查询的数据
 * @param int $pid 父级id
 */
function recursion($data, $pid = 0)
{
    $child = [];   // 定义存储子级数据数组
    foreach ($data as $key => $value) {
        if ($value['pid'] == $pid) {
            unset($data[$key]);  // 使用过后可以销毁
            $value['child'] = recursion($data, $value['id']);   // 递归调用，查找当前数据的子级
            $child[] = $value;   // 把子级数据添加进数组
        }
    }
    return $child;
}